Mark Ustel

Row

Row

Mark Ustel

Passionate and inquisitive analytically minded Data Scientist, strongly believing in the infusion of Data Science with Design Thinking. Combining strengths from both approaches ensures focus on the customer and problem definition, whilst delivering a creative and highly analytical solution with tangible and quantifiable outcomes. An experienced user of both R and Python, having a strong bias towards R due to its superior statistical ability and interactive web apps in Shiny.


He / him
07702834298
Email me
Harlow, Essex, UK
Connect with me
View my CV

Row

Empathise

Data Acquisition

Data Preparation

Modelling

Visualisation

Deployment

About

---
title: "CV"
output: 
  flexdashboard::flex_dashboard:
    css: "style.css"
    social: ["menu"]
    source_code: embed
    orientation: rows
    vertical_layout: fill
    theme: 
      version: 4
      bootswatch: minty
---

```{r setup, include=FALSE, echo=FALSE}
knitr::opts_chunk$set(echo = TRUE)

library(DT)
library(tidyr)
library(flexdashboard)
library(leaflet)
library(readxl)
library(crosstalk)
library(ggplot2)
library(plotly)
library(fmsb)
library(viridis)
library(fontawesome)


```

```{r data, include=FALSE, echo=FALSE}

input <- read_excel("input.xlsx", sheet = "JobHistory2") |> mutate(To = replace_na(To, Sys.Date()))

df <- input |> 
  mutate(FromFormat = format(as.Date(input$From), '%b-%Y'),
         ToFormat = format(as.Date(input$To), '%b-%Y')
         )
# ,
#          tag = paste('<font size="+2"> <b>', Position, '</b> at', Company, 
#                      '</font> </br><p> <font size="-2"> <i>', FromFormat, ' to ',  ToFormat, '</i> </font> </p> <hr>
#                      <li>', Desc1, '</li> <li>', Desc2, '</li> <li>', Desc3, '</li> <li>', Desc4, '</li> <li>', Desc5, '</li>'))

shared_df <- SharedData$new(df)

pal <- colorFactor(viridis(3, direction = -1), input$Company)
```


Mark Ustel
=====================================

Row {data-height=200}
-------------------------------------
###
```{r timeline, echo=FALSE}
plot_ly(data = shared_df,
        x = ~From, 
        y = ~rep(0,6), 
        color = ~Company,
        colors = viridis(3, direction = -1),
        type   = 'scatter', 
        mode   = 'markers',
        opacity = 0.65,
        text = ~paste('<b>', Position, '</b> at', Company, '</br> <i> From ', FromFormat, ' to ',  ToFormat, '</i>'),
        marker = list(size = 30)) |>
  highlight(on = "plotly_hover", off = "plotly_doubleclick") |>
    layout(title = list(text = "Work History",
                      x = 0.05,
                      y = 0.9),
           xaxis = list(title = FALSE, 
                      showticklabels = TRUE, 
                      showgrid = TRUE),
           yaxis = list(title = FALSE, 
                      showticklabels = FALSE, 
                      showgrid = FALSE),
           showlegend = FALSE) |>
  config(displayModeBar = FALSE)

```


Row {data-height=500}
-------------------------------------
###
```{r workexperience, echo=FALSE}
datatable(shared_df, escape=FALSE,
          options = list(columnDefs = list(list(visible=FALSE, targets=c(seq(1:9),c(11,12)))),
                         pageLength = 1, lengthChange = FALSE, info = FALSE,
                         style = 'auto',
                         language = list(search = "<i class='glyphicon glyphicon-search'></i>"),
                         searchHighlight = TRUE,
                         headerCallback = JS(
              "function(thead, data, start, end, display){",
              "  $(thead).remove();",
              "}")
                         ) )
```

###

#### Mark Ustel  
Passionate and inquisitive analytically minded <b>Data Scientist</b>, strongly believing in the infusion of Data Science with <big>Design Thinking</big>. Combining strengths from both approaches ensures focus on the customer and problem definition, whilst delivering a <big>creative</big> and highly <b>analytical</b> solution with tangible and quantifiable outcomes. An experienced user of both R and Python, having a strong bias towards <big><b>R</b></big> due to its superior statistical ability and <big>interactive</big> web apps in <b>Shiny</b>.
</br>
<hr>
</br>
`r fa(name = "circle-user", fill = "#78c2ad", margin_left = "2em", margin_right = "2em")`He / him  
`r fa(name = "phone", fill = "#6cc3d5", margin_left = "2em", margin_right = "2em")`07702834298  
`r fa(name = "envelope-open", fill = "#78c2ad", margin_left = "2em", margin_right = "2em")`[Email me](mailto:mark.ustel@googlemail.com)  
`r fa(name = "location-pin", fill = "#6cc3d5", margin_left = "2em", margin_right = "2em")`Harlow, Essex, UK  
`r fa(name = "linkedin", fill = "#78c2ad", margin_left = "2em", margin_right = "2em")`[Connect with me](https://linkedin.com/in/mark-ustel-1342b067)  
`r fa(name = "github", fill = "#6cc3d5", margin_left = "2em", margin_right = "2em")`[View my CV](https://mark-ustel.github.io/CV/)  

### 
```{r map, echo=FALSE}
leaflet() |>
  addProviderTiles(
    providers$CartoDB.Positron,
    group = "CartoDB",
    options = providerTileOptions(opacity = 0.95)
  ) |>
  addProviderTiles(
    "Stamen.Terrain",
    group = "Terrain",
    options = providerTileOptions(opacity = 0.75)
  ) |>
  addProviderTiles(
    "Stamen.Toner",
    group = "Toner",
    options = providerTileOptions(opacity = 0.5)
  ) |>

  addProviderTiles(
    "Stamen.Watercolor",
    group = "Watercolor",
    options = providerTileOptions(opacity = 0.5)
  ) |>
  # add a layers control
  addLayersControl(
    baseGroups = c("CartoDB", "Terrain", "Toner", "Watercolor"),
    position = "topleft"
  ) |>
  addMarkers(lng=0.102310, lat=51.772938, label="Home") |>
  addCircleMarkers(data = shared_df, lng = ~lon, lat = ~lat, label = ~Company, color = ~pal(Company))
```





Row {data-height=300}
-------------------------------------

### Empathise
```{r 1, echo=FALSE}
skills <- read_excel("input.xlsx", sheet = "Skills") 

radar.fun <- function (data, colour1, colour2){
  radarchart(
  df = data,
  axistype = 0,
  seg = 5,
  pty = 16,
  pcol = colour1,
  plty = 1,
  plwd = 2,
  pfcol = colour2,
  cglty = 3,
  cglwd = 1,
  cglcol = rgb(0,0,0,0.25),
  centerzero = TRUE,
  vlcex = 1.2
)
}

col1 <- c(rgb(1,0.4,0.4,0.95), rgb(1,0.6,0.2,0.95), rgb(0.8,0.8,0,0.95), rgb(0,0.8,0.4,0.95), rgb(0.2,0.6,1,0.95), rgb(0.4,0.4,1,0.95), rgb(0.7,0.4,1,0.95))
col2 <- c(rgb(1,0.4,0.4,0.5),rgb(1,0.6,0.2,0.5), rgb(0.8,0.8,0,0.5), rgb(0,0.8,0.4,0.5), rgb(0.2,0.6,1,0.5), rgb(0.4,0.4,1,0.5), rgb(0.7,0.4,1,0.5))

i <- 1
radar.fun(data = skills[,(((i-1)*5)+1):(((i-1)*5)+5)], colour1 = col1[i], colour2 = col2[i])
```

### Data Acquisition
```{r 2, echo=FALSE}
i <- i+1
radar.fun(data = skills[,(((i-1)*5)+1):(((i-1)*5)+5)], colour1 = col1[i], colour2 = col2[i])
```

### Data Preparation
```{r 3, echo=FALSE}
i <- i+1
radar.fun(data = skills[,(((i-1)*5)+1):(((i-1)*5)+5)], colour1 = col1[i], colour2 = col2[i])
```

### Modelling
```{r 4, echo=FALSE}
i <- i+1
radar.fun(data = skills[,(((i-1)*5)+1):(((i-1)*5)+5)], colour1 = col1[i], colour2 = col2[i])
```

### Visualisation
```{r 6, echo=FALSE}
i <- i+2
radar.fun(data = skills[,(((i-1)*5)+1):(((i-1)*5)+5)], colour1 = col1[i], colour2 = col2[i])
```

### Deployment
```{r 7, echo=FALSE}
i <- i+1
radar.fun(data = skills[,(((i-1)*5)+1):(((i-1)*5)+5)], colour1 = col1[i], colour2 = col2[i])
```



About
=====================================